home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / comms / internet / html-related / hsc / source / hscprj / document.h < prev    next >
C/C++ Source or Header  |  1996-09-10  |  3KB  |  99 lines

  1. /*
  2.  * hsclib/document.h
  3.  *
  4.  * document managment routines for hsc
  5.  *
  6.  */
  7.  
  8. #ifndef HSCPRJ_DOCUMENT_H
  9. #define HSCPRJ_DOCUMENT_H
  10.  
  11. #include "hsclib/ldebug.h"
  12.  
  13. #include "ugly/utypes.h"
  14. #include "ugly/dllist.h"
  15. #include "ugly/expstr.h"
  16. #include "ugly/umemory.h"
  17. #include "ugly/ustring.h"
  18. #include "ugly/infile.h"
  19.  
  20. /* document structure */
  21. typedef struct document_node {
  22.     STRPTR docname;             /* document name */
  23.     STRPTR sourcename;          /* main sourcefile name */
  24.     EXPSTR *title;              /* title specified with <TITLE> */
  25.     DLLIST *iddefs;             /* list of IDs defined in this file */
  26.     DLLIST *includes;           /* list of included files */
  27.     DLLIST *references;         /* list of docs/images/.. references
  28.                                  *   within this document */
  29.     ULONG  flags;               /* document flags */
  30. } HSCDOC;
  31.  
  32. /* document flags */
  33. #define DF_INFO_IDDEF     (1<<0)
  34. #define DF_CALL_IDDEF     (1<<1)
  35. #define DF_INFO_REFERENCE (1<<2)
  36. #define DF_CALL_REFERENCE (1<<3)
  37. #define DF_INFO_INCLUDE   (1<<4)
  38. #define DF_CALL_INCLUDE   (1<<5)
  39.  
  40. /* caller structure */
  41. typedef struct caller_node {
  42.     STRPTR name;
  43.     ULONG posx;
  44.     ULONG posy;
  45. } CALLER;
  46.  
  47. /* reference structure */
  48. typedef struct reference_node {
  49.     STRPTR name;
  50.     CALLER *caller;
  51. } HSCREF;
  52.  
  53. /* include structure */
  54. typedef struct include_node {
  55.     STRPTR name;
  56.     CALLER *caller;
  57. } HSCINC;
  58.  
  59. /* id-definition structure */
  60. typedef struct iddef_node {
  61.     STRPTR name;
  62.     CALLER *caller;
  63.     INFILEPOS *fpos; /* only used by local IDs for error-position */
  64. } HSCIDD;
  65.  
  66. extern CALLER *new_caller(STRPTR fname, ULONG posx, ULONG posy);
  67. extern VOID del_caller(APTR data);
  68. extern CALLER *fpos2caller(INFILEPOS * fpos);
  69.  
  70. extern HSCDOC *new_document(STRPTR docname);
  71. extern VOID del_document(APTR data);
  72. extern int cmp_document(APTR cmp_data, APTR list_data);
  73. extern DLNODE *find_document_node(DLLIST *list, STRPTR name);
  74. extern HSCDOC *find_document(DLLIST * list, STRPTR name);
  75.  
  76. extern VOID del_reference(APTR data);
  77. extern HSCREF *new_reference(STRPTR newname);
  78. extern int cmp_reference(APTR cmp_data, APTR list_data);
  79. extern HSCREF *app_reference(HSCDOC * document, STRPTR ref_name);
  80.  
  81. extern VOID del_include(APTR data);
  82. extern HSCINC *new_include(STRPTR newname);
  83. extern int cmp_include(APTR cmp_data, APTR list_data);
  84. extern HSCINC *app_include(HSCDOC * document, STRPTR inc_name);
  85.  
  86. extern VOID del_iddef(APTR data);
  87. extern HSCIDD *new_iddef(STRPTR newname);
  88. extern VOID prt_iddef(FILE * stream, APTR data);
  89. extern int cmp_iddef(APTR cmp_data, APTR list_data);
  90. extern HSCIDD *app_iddef(HSCDOC * document, STRPTR iddef_name);
  91. extern HSCIDD *find_iddef(HSCDOC * document, STRPTR name);
  92.  
  93. /* function called if invalid state dedected */
  94. #define panic(text) call_panic(text,__FILE__,__LINE__)
  95. extern VOID call_panic(STRPTR text, STRPTR file, ULONG line);
  96.  
  97. #endif /* HSCPRJ_DOCUMENT_H */
  98.  
  99.